import axios from 'axios'
import router from '../router/index'
import {
  Loading,
  Message
} from 'element-ui'

let loading

// 开始加载动画
const loadingStart = () => {
  loading = Loading.service({
    lock: true,
    text: '拼命加载中',
    background: 'rgba(0, 0, 0, 0.7)'
  })
}

// 结束加载动画
function loadingEnd () {
  loading.close()
}

// 请求拦截
axios.interceptors.request.use(config => {
  // 使用加载动画
  loadingStart()

  if (localStorage.manageSystemToken) {
    config.headers.Autherization = localStorage.manageSystemToken
  }

  return config
}, error => {
  return Promise.reject(error)
})

// 响应拦截
axios.interceptors.response.use(response => {
  loadingEnd()
  return response
}, error => {
  // 结束加载动画
  loadingEnd()

  // 提示错误信息
  Message.error('请求失败')

  // 获取错误状态码
  const { status } = error.response
  console.log(status)

  if (status === 401) {
    // token过期
    Message.error('登录过期，请重新登录！')

    // 清除过期的token
    localStorage.removeItem('manageSystemToken')

    // 跳转到登录页面
    router.push('/login')
  }

  // 将错误信息返回
  return Promise.reject(error)
})

export default axios
